// 数据导入导出模块

import dataManager from './dataManager.js';
import { showToast } from './utils.js';

// 导出数据
export function exportData(data) {
    try {
        const dataStr = JSON.stringify(data, null, 2);
        const blob = new Blob([dataStr], { type: 'application/json' });
        const url = URL.createObjectURL(blob);
        
        const a = document.createElement('a');
        a.href = url;
        a.download = 'nav_data.json';
        document.body.appendChild(a);
        a.click();
        
        // 清理资源
        setTimeout(() => {
            document.body.removeChild(a);
            URL.revokeObjectURL(url);
        }, 100);
        
        showToast('导出成功');
    } catch (error) {
        console.error('导出失败:', error);
        showToast('导出失败');
    }
}

// 导入数据
export function importData(file, data) {
    if (!file) return;
    
    // 文件验证
    if (file.type !== 'application/json' && !file.name.endsWith('.json')) {
        showToast('请选择JSON格式的文件');
        return;
    }
    
    if (file.size > 5 * 1024 * 1024) {
        showToast('文件过大，请选择小于5MB的文件');
        return;
    }
    
    const reader = new FileReader();
    
    reader.onload = function(e) {
        try {
            const importedData = JSON.parse(e.target.result);
            
            if (!dataManager.isValidData(importedData)) {
                showToast('导入数据格式不正确');
                return;
            }
            
            // 确保所有标签都有图标数组
            importedData.tabs.forEach(tab => {
                if (!Array.isArray(importedData.icons[tab])) {
                    importedData.icons[tab] = [];
                }
            });
            
            // 确保包含首页
            if (!importedData.tabs.includes('首页')) {
                importedData.tabs.unshift('首页');
                importedData.icons['首页'] = importedData.icons['首页'] || [];
            }
            
            Object.assign(data, importedData);
            data.version = 2;
            
            if (dataManager.saveData(data)) {
                if (typeof window.renderAll === 'function') {
                    window.renderAll();
                }
                showToast('导入成功');
                return true;
            }
        } catch (error) {
            const message = error instanceof SyntaxError ? '文件格式错误，无法解析JSON' : '导入失败，请检查文件格式';
            showToast(message);
        }
    };
    
    reader.onerror = function() {
        showToast('读取文件失败');
    };
    
    reader.readAsText(file);
    return false;
}

// 导出模块
export default {
    exportData,
    importData
};